package com.ruoyi.statistic.service;

import com.ruoyi.statistic.domain.StatisticStudentEmploymentInfo;
import com.ruoyi.statistic.domain.vo.KeyValueVo;
import com.ruoyi.statistic.domain.vo.TopNVo;

import java.util.Date;
import java.util.List;

public interface IStatisticStudentEmploymentInfoService {
    /**
     * 查询就业数据管理
     *
     * @param id 就业数据管理主键
     * @return 就业数据管理
     */
    public StatisticStudentEmploymentInfo selectStatisticStudentEmploymentInfoById(Long id);

    /**
     * 查询就业数据管理列表
     *
     * @param statisticStudentEmploymentInfo 就业数据管理
     * @return 就业数据管理集合
     */
    public List<StatisticStudentEmploymentInfo> selectStatisticStudentEmploymentInfoList(StatisticStudentEmploymentInfo statisticStudentEmploymentInfo);


    /**
     * 判断是否存在指定日期的文件
     *
     * @param date
     * @return
     */
    public List<StatisticStudentEmploymentInfo> selectStatisticStudentEmploymentInfoByDate(Date date);

    /**
     * 新增就业数据管理
     *
     * @param statisticStudentEmploymentInfo 就业数据管理
     * @return 结果
     */
    public int insertStatisticStudentEmploymentInfo(StatisticStudentEmploymentInfo statisticStudentEmploymentInfo);

    /**
     * 修改就业数据管理
     *
     * @param studentEmploymentInfo 就业数据管理
     * @return 结果
     */
    public int updateStatisticStudentEmploymentInfo(StatisticStudentEmploymentInfo studentEmploymentInfo);

    /**
     * 批量删除就业数据管理
     *
     * @param ids 需要删除的就业数据管理主键集合
     * @return 结果
     */
    public int deleteStatisticStudentEmploymentInfoByIds(Long[] ids);

    /**
     * 删除就业数据管理信息
     *
     * @param id 就业数据管理主键
     * @return 结果
     */
    public int deleteStatisticStudentEmploymentInfoById(Long id);


    /**
     * 判断添加日期的数据是否存在
     *
     * @return
     */
    public boolean checkStatisticStudentEmploymentInfoByDate(String year, Date date);

    /**
     * @return
     */
    public int deleteStatisticStudentEmploymentInfoByDate(String year, Date date);


    /**
     * 判断指定日期的数据是否存在
     *
     * @return
     */
//    public boolean checkStatisticStudentEmploymentInfoAnyByDate(Date date);

    /**
     * @return
     */
//    public int deleteStatisticStudentEmploymentInfoByDate(Date date);


    /**
     * 学生就业聚合统计（汇总）
     *
     * @param employmentAggregationSearchParamVo
     * @return
     */
//    public EmploymentAggregationVo employmentAggregation(EmploymentAggregationSearchParamVo employmentAggregationSearchParamVo);


    /**
     * 学生就业统计（按系别划分）
     *
     * @param employmentDepartmentDivideSearchParamVo
     * @return
     */
//    public List<EmploymentDepartmentDivideVo> employmentDepartmentDivide(EmploymentDepartmentDivideSearchParamVo employmentDepartmentDivideSearchParamVo);


    /**
     * 学生就业统计（按专业划分）
     *
     * @param employmentMajorDivideSearchParamVo
     * @return
     */
//    public List<EmploymentMajorDivideVo> employmentMajorDivide(EmploymentMajorDivideSearchParamVo employmentMajorDivideSearchParamVo);


    /**
     * 学生就业统计（按组织划分）
     *
     * @param employmentGroupDivideSearchParamVo
     * @return
     */
//    public List<EmploymentGroupDivideVo> employmentGroupDivide(EmploymentGroupDivideSearchParamVo employmentGroupDivideSearchParamVo);


    /**
     * 学生就业统计（按辅导员划分）
     *
     * @param employmentCounsellorDivideSearchParamVo
     * @return
     */
//    public List<EmploymentCounsellorDivideVo> employmentCounsellorDivide(EmploymentCounsellorDivideSearchParamVo employmentCounsellorDivideSearchParamVo);


    /**
     * 获取前N名的系别
     *
     * @param vo
     * @return
     */
    public List<KeyValueVo> selectTopNDepartment(TopNVo vo);


    /**
     * 获取前N名的辅导员
     *
     * @param vo
     * @return
     */
    public List<KeyValueVo> selectTopNCounsellor(TopNVo vo);

    /**
     * 获取前N名的组织
     *
     * @param vo
     * @return
     */
    public List<KeyValueVo> selectTopNGroup(TopNVo vo);
}
